A color space is a three dimensional representation of the three independent color attributes, hue (xe2x80x9cHxe2x80x9d), lightness (xe2x80x9cLxe2x80x9d), and chroma (xe2x80x9cCxe2x80x9d) that define the range of colors.
The hue attribute of a color describes the differences in appearance related to different apparent frequencies of the observed light (e.g., from reds at a wavelength of xcx9c7000 angstroms, to blues and violets at xcx9c4000 angstroms.) Examples spanning the usual range of the hue dimension of color space include the cross-section of a rainbow and a circle of constant radius on the well known xe2x80x9ccolor wheelxe2x80x9d.
The lightness attribute of a color ranges from black, through dark gray, gray and light gray, to white. Lightness changes a hue such as red to produce a color such as light red or dark red.
The chroma attribute of a color describes the relative amounts of different hues that are included in the color, and determines the color""s vividness. A wavelength of light of a single hue (e.g., light from a laser) has high chroma and a vivid color. Nearly equal mixing of all hues produces low chroma and a brownish appearance.
Color spaces may represent the attributes hue, lightness and chroma using a variety of coordinate systems. Each color is defined by a set of color coordinates representing a value along each axis of the selected coordinate system. One commonly used coordinate system is the CIELAB (Commission Internationale de L""Eclairage L* a* b* color space coordinate system. The CIELAB axes L*, a*, and b* comprise a rectangular coordinate system. The L* or lightness axis goes from back to front, with positive values corresponding to increasing whiteness. The a* or green-red axis goes from left to right, with positive values corresponding to increasing redness. The b* or blue-yellow axis goes from bottom to top, with positive values corresponding to increasing yellowness.
Color imaging devices (e.g., printers, monitors and cameras) detect or reproduce only a particular limited range of the colors in the device independent color space. This limited range of the color space is a device dependent color gamut. A frequent problem encountered in color reproduction is that the color gamut of a destination device differs from that of a source device or image. During transfer of color information from the source device to the destination device, some of the colors included in the image of first device may be physically unrealizable (out-of-gamut) on the destination device. A specified color is out-of-gamut when there are no colors in the color gamut having a set of color coordinates equal to those of the specified color.
The need for color gamut-mapping arises when the source image contains out-of-gamut colors for a specified destination device. It is important to have an effective gamut-mapping process in order to transfer visually appealing color images between devices with disparate color gamuts.
Mapping an out-of-gamut color into a color gamut thus requires changing at least one color coordinate of the out-of-gamut color so that each color coordinate of the mapped color is equal to that of a color in the color gamut.
One method to map an out-of-gamut color into a color gamut is to select the color coordinate along one coordinate axis of the color space coordinate system, and reduce it until the mapped color is in-gamut. For the CIELAB color space, one might select to reduce the a* axis color coordinate, the b* axis color coordinate, or the L* axis color coordinate. For example, a vivid orange color with middle ligthness (L*=50) might be brought in-gamut by reducing the a* axis color coordinate. However, as redness (a*) is reduced with yellowness (b*) constant, the hue becomes increasingly yellow. Similarly, reducing the b* axis color coordinate with constant a*, the hue becomes increasingly red. Unfortunately, the eye is extremely sensitive to changes in hue, making these changes objectionable to an observer. In the selected example (L*=50) and so cannot be reduced to bring the color in-gamut.
A second method to map an out-of-gamut color into a color gamut is to employ a look-up table of color coordinates to be mapped and corresponding in-gamut mapped color coordinates. For the CIELAB color space, this method is unwieldy, requiring determination and processing of a large table that encompasses the full range of three-coordinate combinations.
A third method to map an out-of-gamut color onto a gamut is described by G. Braun and M. Fairchild in the Proceedings of the 5th Color Imaging Conference, pp. 147-152 (1998). According to this method, a set of xe2x80x9cLABxe2x80x9d color coordinates of an out-of-gamut color represented in the CIELAB color space is transformed to a corresponding set of color coordinates in a cylindrical xe2x80x9cLCHxe2x80x9d coordinate system. The xe2x80x9cLCHxe2x80x9d coordinate system includes a lightness axis (L*), a chroma axis {C*=(a*2+b*2)1/2}, and a hue axis (xe2x80x9cHxe2x80x9d=arctan(b*/a*)) as previously described. An out-of-gamut color, represented as a set of xe2x80x9cLCHxe2x80x9d color coordinates is brought into a color gamut by reducing the C* axis color coordinate until an in-gamut color is obtained. The set of xe2x80x9cLCHxe2x80x9d color coordinates of the in-gamut color may then be reverse transformed to generate a set of in-gamut color coordinates in the xe2x80x9cLABxe2x80x9d coordinate system. This method has an important advantage over the method of changing the a* or b* axis coordinate of the CIELAB coordinate system. The human eye is much less sensitive to small changes in chroma than similarly small changes in hue. Therefore, the mapped in-gamut colors generally appear more similar to the out-of-gamut colors when only chroma, the C* axis of the LCH polar coordinate system, is changed.
Gamut-mapping by changing only chroma is effective for mapping colors into a gamut with a fairly uniform maximum chroma value for the full range of xe2x80x9cHxe2x80x9d and L* values (i.e., a nearly cylindrical gamut). For other color gamut shapes, a large change of the C* coordinate may be necessary to bring a color in-gamut. In such cases the mapped in-gamut color can appear noticeably brownish and washed out, compared to the out-of-gamut color. In these cases there may be, for example, a more similar in-gamut color having a similar C* value and a slightly different value of luminosity.
Therefore there is a need in the art for and improved method for mapping colors into a color gamut. The out-of-gamut colors should appear similar to the corresponding mapped in-gamut colors, for a wide range of color gamuts.
Some embodiments of the invention provide a method for mapping a source color into a color gamut without changing the value of its hue attribute. In some embodiments, a source color is initially represented by a first set of color coordinates that are defined with respect to a first coordinate system. The first set of color coordinates is then transformed to a second set of color coordinates, defined in a second coordinate system. If the second set of color coordinates is outside of a selected color gamut, the value of a first color coordinate of the second set of color coordinates is reduced until the second set of color coordinates is in-gamut. The first coordinate axis of the second coordinate system is either an xe2x80x9cRxe2x80x9d axis or a coordinate axis that is independent of hue, xe2x80x9cHxe2x80x9d, and not identical to chroma, C*. The in-gamut set of color coordinates comprises a gamut-mapped color corresponding to the source color.
The gamut-mapping procedure may be applied to a source image or device color gamut comprising many colors defined in a first coordinate system. These colors are gamut-mapped into a color gamut of a destination device (such as a printer) defined in a second coordinate system. According to some embodiments of the invention, the color coordinates of the gamut-mapped colors may be reverse transformed from the second coordinate system to the first coordinate system. According to other embodiments of the invention, the color coordinates of the gamut-mapped colors may be transformed from the second coordinate system to a third coordinate system used by the destination device.